﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.clinica.business.BE.actplansalud;
using com.clinica.business.BE.comun;
using LiclUtil;
using LiclActPlanSalud.Views;
using System.Text;

namespace wesiGestClinica.actplansalud
{
    public partial class FormsManSolicitudPlanSalud : Shared.SMGPaseBase, ILiclManSolicitudPlanSalud
    {
        private LiclManSolicitudPlanSaludPresenter oPresenter = new LiclManSolicitudPlanSaludPresenter();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                oPresenter.View = this;
                this.Master.TituloModulo = "Registrar Solicitud Plan de Salud";
                CargarTipoDocumento();
                IniciarControles();
                CargarUrl();
                //EstablecerModos(0);
            }
          //  VerificarItemGrilla();
            Master.OcultarMensaje();
            oPresenter.View = this;
        }
        protected override void DefineHandlers()
        {
            btn_Buscar.Click += new EventHandler(btn_Buscar_Click);
            btn_Buscar.Attributes.Add("onClick", "abrirPopupAgregarPlanSaludOrigen();");

            btn_Agregar.Attributes.Add("onClick", "abrirPopupAgregarServicios();");

            btn_BuscarCiaSeguros.Click += new EventHandler(btn_BuscarCiaSeguros_Click);
            btn_BuscarCiaSeguros.Attributes.Add("onClick", "abrirPopupAgregarCiaSeguros();");
            img_BuscarCiaSeguros.Attributes.Add("onClick", "abrirPopupAgregarCiaSeguros();");

            btn_BuscarEmpresa.Click += new EventHandler(btn_BuscarEmpresa_Click);
            btn_BuscarEmpresa.Attributes.Add("onClick", "abrirPopupAgregarEmpresa();");
            img_BuscarEmpresa.Attributes.Add("onClick", "abrirPopupAgregarEmpresa();");

            UCBarra1.img_Grabar.Click += new ImageClickEventHandler(img_Grabar_Click);
            UCBarra1.img_Grabar.Attributes.Add("onClick", "if(!window.confirm(' Desea Guardar Solicitud Plan de Salud'))return false;");
            UCBarra1.img_Volver.Click += new ImageClickEventHandler(img_Volver_Click);
            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;

            UCBarra1.img_Eliminar.Click += new ImageClickEventHandler(img_Eliminar_Click);
            UCBarra1.img_Eliminar.Visible = true;
            UCBarra1.img_Eliminar.Attributes.Add("onClick", "if(!window.confirm('Está seguro de rechazar la solicitud?'))return false;");


            btn_Agregar.Click += new EventHandler(btn_Agregar_Click);
            dg_PlanSaludDetalle.RowCommand += new GridViewCommandEventHandler(dg_PlanSaludDetalle_RowCommand);
            btn_Aprobar.Click += new EventHandler(btn_Aprobar_Click);
            btn_Aprobar.Attributes.Add("onClick", "if(!window.confirm(' Desea Aprobar Plan de Salud'))return false;");
            btn_AprobarPendiente.Click += new EventHandler(btn_AprobarPendiente_Click);
            btn_AprobarPendiente.Attributes.Add("onClick", "if(!window.confirm(' Desea Aprobar Plan de Salud'))return false;");
            rbl_TipoDocumento.SelectedIndexChanged += new EventHandler(rbl_TipoDocumento_SelectedIndexChanged);
        }

            

        #region Eventos
        void rbl_TipoDocumento_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rbl_TipoDocumento.SelectedValue == "1")
            {
                EstablecerModos(1);
            }
            else if (rbl_TipoDocumento.SelectedValue == "2")
            {
                EstablecerModos(2);
                rbl_TipoDocumento.Enabled = true;
            }
        }  
        void btn_AprobarPendiente_Click(object sender, EventArgs e)
        {
            string TipoSol = Request.QueryString["TipoSol"].ToString().Trim();
            string Num = Request.QueryString["Num"].ToString().Trim();
            int accion = 0;
            if (rbl_TipoDocumento.SelectedValue == "1")
                accion = 1;
            else if (rbl_TipoDocumento.SelectedValue == "2")
                accion = 2;
            try
            {
                if (ValidarAprobacion())
                {
                    PlanSaludBE oPla = new PlanSaludBE();
                    oPla.TipoSolicitud = int.Parse(TipoSol);
                    oPla.NumeroSolicitud = int.Parse(Num);
                    if (rbl_TipoDocumento.SelectedValue == "2")
                        oPla.CodigoPlanSalud = int.Parse(txt_CodigoPlanSeguro.Text);

                    oPresenter.onGenerar_PlanSalud(oPla,accion);
                    EstablecerModos(4);
                    btn_AprobarPendiente.Enabled = false;
                }
            }
            catch (Exception)
            {
            }
        }
        void btn_Aprobar_Click(object sender, EventArgs e)
        {
            string TipoSol = Request.QueryString["TipoSol"].ToString().Trim();
            string Num = Request.QueryString["Num"].ToString().Trim();
            try
            {
                if (ValidarAprobacion())
                {
                    PlanSaludBE oPla = new PlanSaludBE();
                    oPla.TipoSolicitud = int.Parse(TipoSol);
                    oPla.NumeroSolicitud = int.Parse(Num);
                    oPresenter.onAprobar_SolicitudPlanSalud(oPla);
                    EstablecerModos(3);
                    btn_Aprobar.Enabled = false;
                }
            }
            catch (Exception)
            {
            }
        }

        void btn_BuscarEmpresa_Click(object sender, EventArgs e)
        {
          
        }

        void btn_BuscarCiaSeguros_Click(object sender, EventArgs e)
        {
           
        }

        void dg_PlanSaludDetalle_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Eliminar")
            {
                string strUrl = string.Empty;
                string strScript = string.Empty;
                bool booFalt = false;
                PlanSaludBE oTarifa = new PlanSaludBE();
                GridViewRow fila = (GridViewRow)((ImageButton)e.CommandSource).NamingContainer;
                dg_PlanSaludDetalle.SelectedIndex = fila.RowIndex;
                string[] arr = e.CommandArgument.ToString().Split(new char[] { '|' });
                //&& arr[1].ToString().Trim() != "0"
                if (arr[0].ToString().Trim() != "0" )
                {
                    if (ListaSolicitudPlanSalud != null)
                    {
                        if (ListaSolicitudPlanSalud.Count > 0)
                        {
                            foreach (PlanSaludBE item in ListaSolicitudPlanSalud)
                            {
                                if (item.CodigoServicio == int.Parse(arr[0].ToString().Trim()) && item.NumeroSolicitud == int.Parse(arr[1].ToString().Trim()))
                                {
                                    booFalt = true;
                                    oTarifa = item;
                                }
                            }
                            ListaSolicitudPlanSalud.Remove(oTarifa);
                            dg_PlanSaludDetalle.DataSource = ListaSolicitudPlanSalud;
                            dg_PlanSaludDetalle.DataBind();
                        }
                    }
                }

            }
        }

        void btn_Agregar_Click(object sender, EventArgs e)
        {
            List<PlanSaludBE> lstPlanSalud = new List<PlanSaludBE>();
            List<ServiciosBE> LstServicio = new List<ServiciosBE>();
            PlanSaludBE oPlanSalud = new PlanSaludBE();

            lstPlanSalud = ListaSolicitudPlanSalud;
            LstServicio = (List<ServiciosBE>)Session["ListaServiciosAdd"];
            if (LstServicio != null)
            {
                if (LstServicio.Count > 0)
                {
                    foreach (ServiciosBE item in LstServicio)
                    {
                        oPlanSalud.CodigoServicio = item.Codigo;
                        oPlanSalud.Servicio = item.Descripcion;
                        oPlanSalud.Unidades = item.Unidades;
                        oPlanSalud.TipoCalculo = item.TipoCalculo;
                        oPlanSalud.DescripcionTipoCalculo = item.DescripcionTipoCalculo;
                        oPlanSalud.ValorCalculo = decimal.Parse(item.ValorCalculo.ToString("#####.##") == string.Empty ? "0.00" : item.ValorCalculo.ToString("#####.##"));
                        oPlanSalud.ValorDescuento = decimal.Parse(item.ValorDescuento.ToString("#####.##") == string.Empty ? "0.00" : item.ValorDescuento.ToString("#####.##"));
                        oPlanSalud.PorcentajeDescuento = decimal.Parse(item.PorcentajeDescuento.ToString("#####.##") == string.Empty ? "0.00" : item.PorcentajeDescuento.ToString("#####.##"));
                        oPlanSalud.Precio = decimal.Parse(item.Precio.ToString("#####.##") == string.Empty ? "0.00" : item.Precio.ToString("#####.##"));
                        if (lstPlanSalud == null)
                            lstPlanSalud = new List<PlanSaludBE>();
                        if (!VerificarServicioExiste(oPlanSalud))
                            lstPlanSalud.Add(oPlanSalud);
                    }
                    dg_PlanSaludDetalle.DataSource = lstPlanSalud;
                    dg_PlanSaludDetalle.DataBind();
                    ListaSolicitudPlanSalud = lstPlanSalud;
                }
            }
        }


        void img_Eliminar_Click(object sender, ImageClickEventArgs e)
        {

            PlanSaludBE oTar = new PlanSaludBE();
            oTar.NumeroSolicitud = int.Parse(Request.QueryString["Num"].ToString().Trim());
            oTar.TipoSolicitud = int.Parse(rbl_TipoDocumento.SelectedValue);

            oPresenter.onRechazar_PlanSalud(oTar);

            ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se cambió el estado a Rechazado');", true);
            Timer1.Enabled = true;
        }


        void img_Volver_Click(object sender, ImageClickEventArgs e)
        {
            if (Request.QueryString["action"].ToString().Trim() == "3")
                Response.Redirect("FormsConBandejaPlanSalud.aspx?action=1");
            else if (Request.QueryString["action"].ToString().Trim() == "4")
                Response.Redirect("FormsConBandejaPlanSalud.aspx?action=2");
            else
                Response.Redirect("FormsConBandejaPlanSalud.aspx?action=0");

        }

        void img_Grabar_Click(object sender, ImageClickEventArgs e)
        {
            int Accion = 0;
            if (Session["Action"]=="update")
                Accion = 2;
            if (Session["Action"]=="new")
                Accion = 1;
            if (validarCampos())
            {
                GuardarTemporal();
                oPresenter.onGrabar_SolicitudPlanSalud(Accion, ListaSolicitudPlanSalud);
            }
        }

        void btn_Buscar_Click(object sender, EventArgs e)
        {
            
        }
        #endregion
        #region Metodos
        private void VerificarItemGrilla()
        {
        if (dg_PlanSaludDetalle.Rows.Count > 0) { 
            if (dg_PlanSaludDetalle.Rows[0].Cells[0].Text == "0")
            {
                dg_PlanSaludDetalle.Enabled = false;
            }else
            {
                dg_PlanSaludDetalle.Enabled = true;
             }
        }   else{
                dg_PlanSaludDetalle.Enabled = false;
    }
}
        private bool VerificarServicioExiste(PlanSaludBE oPlan)
        {
            bool val = false;
            if (ListaSolicitudPlanSalud != null)
                if (ListaSolicitudPlanSalud.Count > 0)
                    foreach (PlanSaludBE item in ListaSolicitudPlanSalud)
                    {
                        if (item.CodigoServicio == oPlan.CodigoServicio)
                        {
                            val = true;
                            break;
                        }
                    }
            return val;

        }
        private void GuardarTemporal()
        {
            PlanSaludBE oPlan = new PlanSaludBE();
            #region Cabecera
            oPlan.TipoSolicitud = int.Parse(rbl_TipoDocumento.SelectedValue);
            oPlan.NumeroSolicitud = int.Parse(txt_Numero.Text);
            oPlan.Fecha = (DateTime)UC_FechaEmision.value;
            oPlan.Descripcion = txt_Descripcion.Text.Trim();
            oPlan.Factor = decimal.Parse(txt_Factor.Text);
            oPlan.Observaciones = txt_Observaciones.Text.Trim();
            oPlan.CodigoAseguradora = int.Parse(txt_CodCiaSeguros.Text.Trim());
            oPlan.CodigoEmpresa = int.Parse(txt_CodEmpresa.Text.Trim());
            oPlan.CodigoPlanSalud = int.Parse(txt_CodigoPlanSeguro.Text);
            if (Request.QueryString["action"].ToString().Trim() == "2")
            {
                oPlan.CodigoEstado = int.Parse(lbl_CodigoEstado.Text);
            }
            else
            {
                oPlan.CodigoEstado = 2;
            }

            #endregion
            #region Detalle
            if (ListaSolicitudPlanSalud != null)
            {
                if (ListaSolicitudPlanSalud.Count > 0)
                {
                    foreach (PlanSaludBE item in ListaSolicitudPlanSalud)
                    {
                        item.TipoSolicitud = oPlan.TipoSolicitud;
                        item.NumeroSolicitud = oPlan.NumeroSolicitud;
                        item.Fecha = oPlan.Fecha;
                        item.Descripcion = oPlan.Descripcion;
                        item.Factor = oPlan.Factor;
                        item.Observaciones = oPlan.Observaciones;
                        item.CodigoPlanSalud = oPlan.CodigoPlanSalud;
                        item.CodigoEstado = oPlan.CodigoEstado;
                        item.CodigoAseguradora = oPlan.CodigoAseguradora;
                        item.CodigoEmpresa = oPlan.CodigoEmpresa;                        
                    }
                }
            }
            #endregion

        }
        private bool validarCampos()
        {
            bool booVal = true;
            StringBuilder strError = new StringBuilder();
            #region Cabecera
            if (rbl_TipoDocumento.SelectedValue == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> Debe seleccionar un tipo de doc. ");
            }
            if (txt_Numero.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> El Número de solicitud no puede estar en blanco. ");
            }
            if (lbl_CodigoEstado.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> El código de estado no puede estar en blanco. ");
            }
            if (rbl_TipoDocumento.SelectedValue == "2")
            {
                if (txt_CodigoPlanSeguro.Text.Trim() == string.Empty || txt_CodigoPlanSeguro.Text.Trim() == "0")
                {
                    booVal = false;
                    strError.Append(" <br/>No ha seleccionado Plan de Salud. ");
                }
            }


           decimal j;
            bool result = Decimal.TryParse(txt_Factor.Text.Trim(), out j);

            if (result == false)
            {
                booVal = false;
                strError.Append("<br/> El factor debe ser un campo decimal.");
            }

            


            if (txt_CodEmpresa.Text.Trim() == string.Empty || txt_Empresa.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> Debe Asignar una empresa. ");
            }
            if (txt_CodCiaSeguros.Text.Trim() == string.Empty || txt_CiaSeguros.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> Debe Asignar una Cia Seguros.");
            }
            if (txt_Factor.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> No ha Ingresado un factor. ");
            }
            if (txt_Descripcion.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> No ha ingresado Descripcion. ");
            }
            try
            {
                decimal.Parse(txt_Factor.Text);
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> se ha ingresado un caracter incorrecta en el factor.");
            }
            try
            {
                int.Parse(txt_Numero.Text);
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> se ha ingresado un carater incorrecto en el Número de solictud.");
            }
            try
            {
                DateTime.Parse(UC_FechaEmision.Texto);
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> se ha ingresado una fecha incorrecta. ");
            }
            try
            {
                decimal.Parse(txt_Factor.Text);
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> se ha ingresado un caracter incorrecta en el factor. ");
            }
            try
            {
                if (Request.QueryString["action"].ToString().Trim() == "2")
                {
                    int.Parse(txt_CodigoPlanSeguro.Text);
                    int.Parse(lbl_CodigoEstado.Text);
                }
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> Error de inconcistencua en Código Plan Salud y Código estado. ");
            }
            #endregion
            #region Detalle
            if (ListaSolicitudPlanSalud != null)
            {
                if (dg_PlanSaludDetalle.Rows.Count == 0 || ListaSolicitudPlanSalud.Count == 0)
                {
                    booVal = false;
                    strError.Append("<br/> Debe ingresar al menos un servicio. ");
                }
            }
            else
            {
                booVal = false;
                strError.Append("<br/> Debe ingresar al menos un servicio. ");
            }
            #endregion
            if (!booVal)
            {
                Master.MostrarMensaje(strError.ToString(), TipoMensaje.Error);
            }
            return booVal;
        }
        private bool ValidarAprobacion()
        {
            bool booVal = true;
            StringBuilder strError = new StringBuilder();
            if (rbl_TipoDocumento.SelectedValue == "2")
            {
                if (txt_CodigoPlanSeguro.Text.Trim() == string.Empty || txt_PlanSegurosOrigen.Text.Trim() == string.Empty)
                {
                    booVal = false;
                    strError.Append("<br/> Debe Asignar un Plan de Salud destino. ");
                }
            }
            if (txt_CodEmpresa.Text.Trim() == string.Empty || txt_Empresa.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> Debe Asignar una empresa. ");
            }
            if (txt_CodCiaSeguros.Text.Trim() == string.Empty || txt_CiaSeguros.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> Debe Asignar una Cia Seguros. ");
            }
            if (txt_Factor.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> No ha Ingresado un factor. ");
            }
            if (txt_Descripcion.Text.Trim() == string.Empty)
            {
                booVal = false;
                strError.Append("<br/> No hay Descripcion. ");
            }
            try
            {
                decimal.Parse(txt_Factor.Text);
            }
            catch (Exception)
            {
                booVal = false;
                strError.Append("<br/> se ha ingresado un caracter incorrecta en el factor. ");
            }
            if (!booVal)
            {
                Master.MostrarMensaje(strError.ToString(), TipoMensaje.Error);
            }
            return booVal;
        }
        private void CargarTipoDocumento()
        {
            ParametrosBE oParm = new ParametrosBE();
            oParm.NombreTabla = "TIPTAR";
            oPresenter.onObterner_Tabla(oParm);
        }
        private void IniciarControles()
        {
            DateTime fecha = new DateTime();
            fecha = DateTime.Today.ToUniversalTime();
            UC_FechaEmision.TextoFecha.Text = fecha.ToString("dd/MM/yyyy");
            lbl_CodigoEstado.Text = "0";
            txt_Estado.Text = string.Empty;
            txt_Descripcion.Text = string.Empty;
            txt_Factor.Text = "0.00";
            txt_Numero.Text = "0";
            txt_Observaciones.Text = string.Empty;
            List<PlanSaludBE> lst = new List<PlanSaludBE>();
            lst.Add(new PlanSaludBE());
            dg_PlanSaludDetalle.DataSource = lst;
            dg_PlanSaludDetalle.DataBind();
            if (rbl_TipoDocumento.Items.Count > 0) rbl_TipoDocumento.Items[0].Selected = true;

            UCBarra1.img_Grabar.Visible = true;
            UCBarra1.img_Volver.Visible = true;
            UCBarra1.img_Eliminar.Visible = false;
            ListaSolicitudPlanSalud = null;
            Session["ListaServiciosAdd"] = null;

        }
        private void CargarUrl()
        {
            string action = string.Empty;
            string TipoSol = string.Empty;
            string Num = string.Empty;

            try
            {
                action = Request.QueryString["action"].ToString().Trim();
                TipoSol = Request.QueryString["TipoSol"].ToString().Trim();
                Num = Request.QueryString["Num"].ToString().Trim();
            }
            catch (Exception)
            {


            }
            switch (action)
            {
                case "1":
                    Session.Add("Action", "new");
                    EstablecerModos(1);
                    break;
                case "2":
                    Session.Add("Action", "update");
                    EstablecerModos(2);
                    PlanSaludBE oPla = new PlanSaludBE();
                    oPla.NumeroSolicitud = int.Parse(Num);
                    oPla.TipoSolicitud = int.Parse(TipoSol);
                    oPresenter.onObtener_SolicitudesPlanSalud(oPla);
                    EstablecerModos(2);
                    break;
                case "3":
                    EstablecerModos(3);
                    PlanSaludBE oPla1 = new PlanSaludBE();
                    oPla1.NumeroSolicitud = int.Parse(Num);
                    oPla1.TipoSolicitud = int.Parse(TipoSol);
                    oPresenter.onObtener_SolicitudesPlanSalud(oPla1);
                    EstablecerModos(3);
                    break;
                case "4":
                    EstablecerModos(4);
                    PlanSaludBE oPla2 = new PlanSaludBE();
                    oPla2.NumeroSolicitud = int.Parse(Num);
                    oPla2.TipoSolicitud = int.Parse(TipoSol);
                    oPresenter.onObtener_SolicitudesPlanSalud(oPla2);
                    EstablecerModos(4);
                    break;
                default:
                    break;
            }
        }
        private void EstablecerModos(int action)
        {
            switch (action)
            {
                case 1:
                    #region Nuevo
                    rbl_TipoDocumento.Enabled =
                    txt_Observaciones.Enabled =
                    txt_Descripcion.Enabled =
                    txt_Factor.Enabled =
                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Grabar.Enabled =
                    img_BuscarCiaSeguros.Visible = 
                    img_BuscarEmpresa.Visible = 
                    btn_Agregar.Visible = true;

                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =

                    lbl_PlanSegurosOrigen.Visible =
                    txt_PlanSegurosOrigen.Visible =
                    btn_Buscar.Visible =
                    btn_Aprobar.Visible= false;                    
                    #endregion
                    break;
                case 2:
                    #region Editar
                    rbl_TipoDocumento.Enabled =
                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =
                    UC_FechaEmision.Enabled =
                    btn_Aprobar.Visible = false;

                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Grabar.Enabled =
                    txt_Observaciones.Enabled =
                    txt_Descripcion.Enabled =
                    txt_Factor.Enabled =
                    btn_Agregar.Enabled =

                    lbl_PlanSegurosOrigen.Visible =
                    txt_PlanSegurosOrigen.Visible =
                    btn_Buscar.Visible =
                    img_BuscarCiaSeguros.Visible = 
                    img_BuscarEmpresa.Visible = 
                    btn_Agregar.Visible = true;
                    #endregion
                    break;
                case 3:
                    #region Editar
                    rbl_TipoDocumento.Enabled =
                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =
                    UC_FechaEmision.Enabled = false;
                    
                    UCBarra1.img_Grabar.Enabled =
                    txt_Observaciones.Enabled =
                    txt_Descripcion.Enabled =
                    txt_Factor.Enabled =
                    btn_Agregar.Enabled =
                    btn_Buscar.Visible=
                    img_BuscarCiaSeguros.Visible = 
                    img_BuscarEmpresa.Visible = 
                    btn_Agregar.Visible=
                    UCBarra1.img_Grabar.Visible = false;
                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Eliminar.Visible=
                    UCBarra1.img_Volver.Visible =
                    btn_Aprobar.Visible = true;
                    btn_AprobarPendiente.Visible = false;
                    dg_PlanSaludDetalle.Columns[7].Visible = false;
                    UCBarra1.img_Eliminar.ToolTip = "Rechazar";
                    #endregion
                    break;
                case 4:
                    #region Editar
                    rbl_TipoDocumento.Enabled =
                    txt_Estado.Enabled =
                    txt_Numero.Enabled =
                    UC_FechaEmision.Enabled =
                    UC_FechaEmision.Enabled = false;

                    UCBarra1.img_Grabar.Enabled =
                    txt_Observaciones.Enabled =
                    txt_Descripcion.Enabled =
                    txt_Factor.Enabled =
                    btn_Agregar.Enabled =
                   
                    UCBarra1.img_Grabar.Visible =
                    btn_Aprobar.Visible = false;
                    dg_PlanSaludDetalle.Columns[7].Visible = false;
                    UCBarra1.img_Volver.Enabled =
                    UCBarra1.img_Eliminar.Visible =
                    UCBarra1.img_Volver.Visible =
                    btn_AprobarPendiente.Visible= true;
                    UCBarra1.img_Eliminar.ToolTip = "Rechazar";
                    #endregion
                    break;
                default:
                    break;
            }
        }
        private void PrepararListaServicios()
        {
            List<ServiciosBE> lst = new List<ServiciosBE>();
            if (ListaSolicitudPlanSalud.Count > 0)
            {

                foreach (PlanSaludBE oPlan in ListaSolicitudPlanSalud)
                {
                    ServiciosBE item = new ServiciosBE();
                    item.Codigo = oPlan.CodigoServicio;
                    item.Descripcion = oPlan.Servicio;
                    item.Unidades = oPlan.Unidades;
                    item.TipoCalculo = oPlan.TipoCalculo;
                    item.DescripcionTipoCalculo = oPlan.DescripcionTipoCalculo;
                    item.ValorCalculo = oPlan.ValorCalculo;
                    item.PorcentajeDescuento = oPlan.PorcentajeDescuento;
                    item.Precio = oPlan.Precio;
                    lst.Add(item);
                }
                Session["ListaServiciosAdd"] = lst;
            }
        }
        #endregion
        #region ILiclManSolicitudPlanSalud Members

        public void MostrarMensajeError(string Mensaje)
        {
            Master.MostrarMensaje(Mensaje.Trim(), TipoMensaje.Error);
        }

        public void ObtenerTabla(List<ParametrosBE> lst)
        {
            rbl_TipoDocumento.DataSource = lst;
            rbl_TipoDocumento.DataValueField = "Codigo";
            rbl_TipoDocumento.DataTextField = "DescripcionCorta";
            rbl_TipoDocumento.DataBind();
        }

        public void ObtenerSolicitudPlanSalud(List<PlanSaludBE> lst)
        {
            if (lst.Count > 0)
            {
                dg_PlanSaludDetalle.DataSource = lst;
                dg_PlanSaludDetalle.DataBind();

                txt_Estado.Text = lst[0].Estado;
                ListaSolicitudPlanSalud = lst;
                PrepararListaServicios();
                if (Request.QueryString["action"].ToString().Trim() != "1")
                {
                    txt_Numero.Text = Request.QueryString["Num"].ToString().Trim();
                    rbl_TipoDocumento.SelectedValue = Request.QueryString["TipoSol"].ToString().Trim();
                    UC_FechaEmision.TextoFecha.Text = lst[0].Fecha.ToString("dd/MM/yyyy");
                    txt_Observaciones.Text = lst[0].Observaciones;
                    txt_Factor.Text = lst[0].Factor.ToString();
                    txt_Descripcion.Text = lst[0].Descripcion.Trim();
                    txt_CodigoPlanSeguro.Text = lst[0].CodigoPlanSalud.ToString();
                    txt_PlanSegurosOrigen.Text = lst[0].DescripcionPlanSalud.Trim();
                    lbl_CodigoEstado.Text = lst[0].CodigoEstado.ToString();
                    txt_CodCiaSeguros.Text = lst[0].CodigoAseguradora.ToString();
                    txt_CiaSeguros.Text = lst[0].DescripcionAseguradora;
                    txt_CodEmpresa.Text = lst[0].CodigoEmpresa.ToString();
                    txt_Empresa.Text = lst[0].RazonSocial;
                }
            }
        }

        public void MantenimientoSolicitudPlanSalud(int NunSol)
        {
            Session.Add("Action", "update");
            EstablecerModos(2);
            PlanSaludBE oTar = new PlanSaludBE();
            oTar.NumeroSolicitud = NunSol;
            oTar.TipoSolicitud = int.Parse(rbl_TipoDocumento.SelectedValue);
            oPresenter.onObtener_SolicitudesPlanSalud(oTar);
            txt_Numero.Text = NunSol.ToString();
            if (Request.QueryString["action"].ToString().Trim() == "1")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se registró " + rbl_TipoDocumento.SelectedItem.Text + " Nro." + NunSol.ToString() + "');", true);
            else if (Request.QueryString["action"].ToString().Trim() == "2")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se Modificó " + rbl_TipoDocumento.SelectedItem.Text + " Nro." + NunSol.ToString() + "');", true);
        }

        #endregion
        public List<PlanSaludBE> ListaSolicitudPlanSalud
        {
            get { return (List<PlanSaludBE>)Session["SolicitudPlanSalud"]; }
            set { Session["SolicitudPlanSalud"] = value; }
        }

        #region ILiclManSolicitudPlanSalud Members


        public void AprobarSolicitudPlanSalud(int NunSol)
        {
            EstablecerModos(3);
            PlanSaludBE oTar = new PlanSaludBE();
            oTar.NumeroSolicitud =int.Parse(Request.QueryString["Num"].ToString().Trim());
            oTar.TipoSolicitud = int.Parse(rbl_TipoDocumento.SelectedValue);
            oPresenter.onObtener_SolicitudesPlanSalud(oTar);
            txt_Numero.Text = oTar.NumeroSolicitud.ToString();
            if (Request.QueryString["action"].ToString().Trim() == "3")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se cambió el estado a Pendiente de Aprobación');", true);
            if (Request.QueryString["action"].ToString().Trim() == "4")
                ScriptManager.RegisterStartupScript(this, typeof(Page), "Envio", "Mostrarmensaje('Se aprobó solicutd Nro." + Request.QueryString["Num"].ToString().Trim() + " y Se registró el plan de salud " + rbl_TipoDocumento.SelectedItem.Text + " Nro." + NunSol.ToString() + "');", true);
        }

        #endregion

        protected void Timer1_Tick(object sender, EventArgs e)
        {
            Response.Redirect("FormsConBandejaPlanSalud.aspx?action=1", false);
        }
    }
}
